Skip to content

Add inclusion list signature verification - #9743

Merged
mergify[bot] merged 6 commits into
sigp:unstablefrom
rahulbarmann:focil/il-signature-verification
Aug 11, 2026
Merged

Add inclusion list signature verification#9743
mergify[bot] merged 6 commits into
sigp:unstablefrom
rahulbarmann:focil/il-signature-verification

Conversation

@rahulbarmann

@rahulbarmann rahulbarmann commented Aug 3, 2026

Copy link
Copy Markdown

Issue Addressed

Part of FOCIL (EIP-7805) in the Heze fork. Implements the spec's is_valid_inclusion_list_signature as inclusion_list_signature_set.

Proposed Changes

  • inclusion_list_signature_set: builds the SignatureSet for a SignedInclusionList, verified under Domain::InclusionListCommittee.
  • Tests: a valid signature verifies, and a signature produced by a different committee member for the same claimed validator_index is rejected.

Additional Info

The domain is computed at the inclusion list's own slot epoch (compute_epoch_at_slot(message.slot)), not the state's current epoch; the two diverge at a fork boundary. The fork is resolved with spec.fork_at_epoch(epoch) rather than state.fork(), matching proposer_preferences_signature_set and execution_payload_bid_signature_set.

@conache

conache commented Aug 5, 2026

Copy link
Copy Markdown

Looking good to me overall. The SignatureSet builder logic looks good to me, and the tests as well.
Two small nits:

  • From the PR description:

Adds the is_valid_inclusion_list_signature consensus helper.

This sent me looking for a helper by this name in the changes, but then I realized it's referring to the consensus-specs helper. Might be worth a small rewording in the description (or a link to the helper in the specs).

  • Also, just a heads-up on the coordination side: PR #9747 removes the E: EthSpec type parameter from InclusionList as a consequence of switching transactions to ProgressiveTransactions type. That would mean that, after merging it, the tests should use InclusionList instead of InclusionList::<E>. Whichever PR merges second would need to apply this small fix.

@rahulbarmann

rahulbarmann commented Aug 5, 2026

Copy link
Copy Markdown
Author

Looking good to me overall. The SignatureSet builder logic looks good to me, and the tests as well. Two small nits:

  • From the PR description:

Adds the is_valid_inclusion_list_signature consensus helper.

This sent me looking for a helper by this name in the changes, but then I realized it's referring to the consensus-specs helper. Might be worth a small rewording in the description (or a link to the helper in the specs).

  • Also, just a heads-up on the coordination side: PR #9747 removes the E: EthSpec type parameter from InclusionList as a consequence of switching transactions to ProgressiveTransactions type. That would mean that, after merging it, the tests should use InclusionList instead of InclusionList::<E>. Whichever PR merges second would need to apply this small fix.

Reworded, thanks.

On #9747, this PR needs a bit more than the test change: it also drops E from SignedInclusionList, so the fn signature changes too, still trivial. #9744 is the important one, since SlotEntry loses its only E-dependent field so the param has to go. The easiest way is probably #9747 first and then I rebase mine on top.

@eserilev eserilev added the ready-for-merge This PR is ready to merge. label Aug 10, 2026
@mergify mergify Bot added the queued label Aug 10, 2026
@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 24 minutes 28 seconds in the queue, including 22 minutes 56 seconds running CI.

Waiting for
  • check-success=local-testnet-success
  • check-success=test-suite-success
All conditions

Reason

The merge conditions cannot be satisfied due to failing checks

  • test-suite-success

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Requeued — the merge queue status continues in this comment ↓.

@eserilev

Copy link
Copy Markdown
Member

@mergify requeue

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 22 minutes 57 seconds in the queue, including 21 minutes 9 seconds running CI.

Waiting for
  • check-success=local-testnet-success
  • check-success=test-suite-success
All conditions

Reason

The merge conditions cannot be satisfied due to failing checks

  • test-suite-success

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Requeued — the merge queue status continues in this comment ↓.

@eserilev

Copy link
Copy Markdown
Member

@mergify requeue

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Merge Queue Status

  • 🟠 Waiting for queue conditions
  • ⏳ Enter queue
  • ⏳ Run checks
  • ⏳ Merge
Required conditions to enter a queue
  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of [📌 queue -> configuration change requirements]:
    • -mergify-configuration-changed
    • check-success = Configuration changed
  • any of [🔀 queue conditions]:
    • all of [📌 queue conditions of queue rule default]:
      • #approved-reviews-by >= 1
      • check-success=license/cla
      • check-success=target-branch-check
      • github-review-approved [🛡 GitHub branch protection]
      • label!=do-not-merge

@mergify mergify Bot added queued and removed dequeued labels Aug 10, 2026
@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 24 minutes in the queue, including 22 minutes 30 seconds running CI.

Waiting for
  • check-success=local-testnet-success
  • check-success=test-suite-success
All conditions

Reason

The merge conditions cannot be satisfied due to failing checks

  • test-suite-success

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Requeued — the merge queue status continues in this comment ↓.

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

requeue

☑️ This pull request is already queued

@mergify mergify Bot added dequeued and removed queued labels Aug 10, 2026
@mergify mergify Bot removed the dequeued label Aug 11, 2026
@rahulbarmann

Copy link
Copy Markdown
Author

It seems the CI failed because of #9774 (which got merged first) had renamed this field in unstable but the tests here still used the old name.

Fixed in 889ba28

@eserilev could you please queue a re-run?

@eserilev

Copy link
Copy Markdown
Member

@mergify requeue

@mergify

mergify Bot commented Aug 11, 2026

Copy link
Copy Markdown

Merge Queue Status

  • 🟠 Waiting for queue conditions
  • ⏳ Enter queue
  • ⏳ Run checks
  • ⏳ Merge
Required conditions to enter a queue
  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of [📌 queue -> configuration change requirements]:
    • -mergify-configuration-changed
    • check-success = Configuration changed
  • any of [🔀 queue conditions]:
    • all of [📌 queue conditions of queue rule default]:
      • #approved-reviews-by >= 1
      • check-success=license/cla
      • check-success=target-branch-check
      • github-review-approved [🛡 GitHub branch protection]
      • label!=do-not-merge

@mergify mergify Bot added the queued label Aug 11, 2026
@mergify

mergify Bot commented Aug 11, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 27 minutes 38 seconds in the queue, including 25 minutes 52 seconds running CI.

Required conditions to merge

@mergify

mergify Bot commented Aug 11, 2026

Copy link
Copy Markdown

requeue

☑️ This pull request is already queued

@mergify
mergify Bot merged commit 4d5d14a into sigp:unstable Aug 11, 2026
38 checks passed
@mergify mergify Bot removed the queued label Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

focil Fork choice enforced inclusion lists heze ready-for-merge This PR is ready to merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants